package fulbitofacil.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import fulbitofacil.exception.DAOExcepcion;
import fulbitofacil.modelo.Comentario;
import fulbitofacil.modelo.Publicidad;
import fulbitofacil.util.ConexionBD;

public class ComentarioDAO extends BaseDAO{
	
	public void insertar(Comentario co) throws DAOExcepcion {
		System.out.println("ComentarioDAO: insertar(Comentario co)");
		String query = "INSERT INTO comentario(fecha,hora, descripcion,calificacion," +
				"Cancha_idCancha,Usuario_idUsuario,Comentario_idComentario) VALUES (?,?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, co.getFecha());
			stmt.setString(2, co.getHora());
			stmt.setString(3, co.getDescripcion());
			stmt.setInt(4, co.getCalificacion());
			stmt.setInt(5, co.getIdCancha());
			stmt.setInt(6, co.getIdCliente());
			stmt.setInt(7, co.getIdComentario());
			
			int i = stmt.executeUpdate(); //para insert,update,delete,create
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
	
	public List listar(int idCancha) throws DAOExcepcion {
		System.out.println("ComentarioDAO: listar()");	
		Connection con = null;
		List lista = new ArrayList<Publicidad>();
		try {
			// creamos el statement
			System.out.println("entro al try comentario");			
			con = ConexionBD.obtenerConexion();
			Statement st = con.createStatement();

			String sql = "SELECT * FROM comentario WHERE Cancha_idCancha='"+idCancha+"'";
			ResultSet rs = st.executeQuery(sql);
			while (rs.next()) {
				Comentario cont = new Comentario();
				cont.setIdComentario(rs.getInt("idComentario"));
				cont.setFecha(rs.getString("fecha"));
				cont.setHora(rs.getString("hora"));
				cont.setDescripcion(rs.getString("descripcion"));
				cont.setCalificacion(rs.getInt("calificacion"));
				cont.setIdCancha(rs.getInt("Cancha_idCancha"));
				cont.setIdComentarioPadre(rs.getInt("Comentario_idComentario"));
				// agregando a la lista
				lista.add(cont);
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("entro al catch");
			e.printStackTrace();
		}
		return lista; 
		
		
	}
	
	
	
	
	
	
	
	
	public Comentario obtener(String idComentario) throws DAOExcepcion {
		System.out.println("ComentarioDAO: obtener(String id)");
		Comentario vo = new Comentario();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			String query = "select descripcion, calificacion from comentario where idComentario=?";
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, idComentario);
			rs = stmt.executeQuery();
			if (rs.next()) {
				vo.setDescripcion(rs.getString(1));
				vo.setCalificacion(rs.getInt(2));
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return vo;
	}
	

}
